import api from '@/http/'


function requestResult(res,options){
	// sucCb 成功回调 errCb 失败回调 falCb 固定回调
	if(res.statusCode == 200 && !!res.data){
		if(res.data.code == 505){
			uni.showToast({
				title:res.data.message + (res.data.errorCause?res.data.errorCause:''),
				icon:'none',
				duration:1500
			})
			return;
		}
		if(!!res.data && !!res.data.code && res.data.code > 0){
			if(!options.notShowError){
				uni.showToast({
					icon: 'none',
					title: res.data.message
				})
			}
			if(!!options.errCb && typeof options.errCb == 'function'){
				options.errCb(res.data);
			}
			return;
		}
		if(!!options.isLogin){
			console.log('login res',res)
			uni.setStorageSync('token',res.data.data.token)
			uni.setStorageSync('userId',res.data.data.id)
		}
		if(!!options.sucCb && typeof options.sucCb == 'function'){
			options.sucCb(res.data);
		}
	}else{
		console.log('错误信息',res);
		let errMessage = '未知错误';
		if(!!res.data && !!res.data.message){
			errMessage = res.data.message
		}else if(!!res.errMsg){
			errMessage = res.errMsg
		}
		uni.showToast({
			title: errMessage
		})
		if(!!options.errCb && typeof options.errCb == 'function'){
			options.errCb(res);
		}
	}
}

/**
 * 
 * @param {*} type 种类
 * @param {*} url 路径
 * @param {*} params 参数
 * @param {*} options 配置，isLogin,sucCb,errCb
 */
function request (type,url,params,options) {
	if(!options){
		options = {};
	}
	if(!!options.notToLogin){
		params.notToLogin = options.notToLogin
	}
	if(!!options.errCb){
		params.errCb = options.errCb
	}
	switch(type.toLowerCase()){
		case 'get':
			api.get(url,params).then(res => {
				requestResult(res,options);
			});
			break;
		case 'post':
			api.post(url,params).then(res => {
				requestResult(res,options);
			});
			break;
		case 'put':
			api.put(url,params).then(res => {
				requestResult(res,options);
			});
			break;
		case 'del':
			api.del(url,params).then(res => {
				requestResult(res,options);
			});
			break;
		default :
			console.log('未知的方式请求，用get代替');
			api.get(url,params).then(res => {
				requestResult(res,options);
			});
			break;
	}
}

export default {
	isToLogin: false,
	request
}

